package NGUYENVANDOAN.ARRAYLIST_DEMO.BAITOAN03;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class DEMO {
    public static void main(String[] args) {
        //1. Khai báo mảng động 1 chiều kiểu đối tượng(Student)?
        List<Student> lisStudent;
        ArrayList<Student> arrStudent;
        
        //2. Khởi tạo biến mảng động 2 chiều?
        lisStudent = new ArrayList<Student>();
        arrStudent = new ArrayList<Student>();
        
        //3. Đưa các đối tượng vào trong mảng động 1 chiều này?
        //a. Khai báo
        Student sv01 = new Student();
        Student sv02 = new Student();
        Student sv03 = new Student();
        Student sv04 = new Student();
        
        //b. Khởi tạo
        sv01.setRollNo(1);
        sv01.setFullName("Trần Thị B");
        sv01.setMark(8.5);
        
        sv02.setRollNo(2);
        sv02.setFullName("Phạm Thị C");
        sv02.setMark(6.5);
        
        sv03.setRollNo(3);
        sv03.setFullName("Hoàng Văn D");
        sv03.setMark(9.5);
        
        sv04.setRollNo(4);
        sv04.setFullName("Mộng Thị Lung Linh Huyền Ảo E");
        sv04.setMark(5.5);
        
        //c. Add?
        lisStudent.add(sv01);
        lisStudent.add(sv02);
        lisStudent.add(sv03);
        lisStudent.add(sv04);
        
        //4. Hiển thị thông tin trong mảng động 1 chiều kiểu đối tượng
        for(int i = 0;i<lisStudent.size();i++){
            System.out.println("--------Sinh viên: "+ i+"---------");
            System.out.println("+ RollNo: "+ lisStudent.get(i).getRollNo());
            System.out.println("+ FullName: "+ lisStudent.get(i).getFullName());
            System.out.println("+ Mark: "+ lisStudent.get(i).getMark());
        }     
        
        //5. Sắp xếp thông tin của đối tượng trong mảng
        Collections.sort(lisStudent, new Comparator<Student>() {
                @Override
                public int compare(Student obj01, Student obj02) {
                    if(obj01.getMark() > obj02.getMark()){
                        return -1;
                    }
                    else if(obj01.getMark() == obj02.getMark()){
                        return 0;
                    }
                    return 1;
                }
        });
        System.out.println("--------------Sorted----------------");
        for(int i = 0;i<lisStudent.size();i++){
            System.out.println("--------Sinh viên: "+ i+"---------");
            System.out.println("+ RollNo: "+ lisStudent.get(i).getRollNo());
            System.out.println("+ FullName: "+ lisStudent.get(i).getFullName());
            System.out.println("+ Mark: "+ lisStudent.get(i).getMark());
        }             
    }
}
